#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
class Listener: public rclcpp::Node
{
public:
    Listener() : Node("talker_node_cpp_listener")
    {
        RCLCPP_INFO(this->get_logger(),"订阅方消息创建！");
        // ​生成一个新的可调用对象，当调用它时，会执行当前对象（this）的 listener_callback方法
        // _1 表示将消息作为函数第一个参数传递给函数
        subscription_ = this->create_subscription<std_msgs::msg::String>("chatter", 
            10,std::bind(&Listener::listener_callback, this,std::placeholders::_1));
        
    }
 private:
    rclcpp::Subscription<std_msgs::msg::String>::SharedPtr subscription_ ;
    void listener_callback(const std_msgs::msg::String & msg) const
    {
        RCLCPP_INFO(this->get_logger(),"订阅的消息:“%s!",msg.data.c_str());
    }  
};
int main(int argc, char const *argv[])
{
    rclcpp::init(argc,argv);
    rclcpp::spin(std::make_shared<Listener>());
    rclcpp::shutdown();
    return 0;
}
